// #include "Thread.hpp"
// #include <iostream>
// #include <unistd.h>
// using namespace std;
// void Print()
// {
//     int cnt = 10;
//     while(cnt--)
//     {
//         cout << "Hello Thread" << endl;
//         usleep(1000);
//     }
// }

// int main()
// {
//     Thread t1("Thread-1",Print);
//     t1.Start();
//     t1.Join();
//     return 0;
// }

#include "Thread.hpp"
#include <iostream>
#include <unistd.h>
#include <functional>
#include "ThreadPool.hpp"

void Print()
{
    std::cout << "Hello,World" << std::endl;
}

int main()
{
    ThreadPool<std::function<void()>> td(3);
    td.Start();
    td.Enqueue(Print);
    td.Enqueue(Print);
    td.Enqueue(Print);
    td.Enqueue(Print);
    td.Enqueue(Print);
    td.Enqueue(Print);
    int n = 1;
    while(true)
    {
        sleep(1);
        td.Enqueue(Print);
    }
    std::cout << "Debug" << std::endl;
    td.WaitAll();
    return 0;
}